﻿using System;

namespace RoughHtml.w3c
{
    public abstract class AttributeCondition : Condition
    {

        /**
         * Returns the
         * <a href="http://www.w3.org/TR/REC-xml-names/#dt-NSName">namespace
         * URI</a> of this attribute condition.
         * <p><code>NULL</code> if :
         * <ul>
         * <li>this attribute condition can match any namespace.
         * <li>this attribute is an id attribute.
         * </ul>
         */
        public abstract String getNamespaceURI();

        /**
         * Returns the
         * <a href="http://www.w3.org/TR/REC-xml-names/#NT-LocalPart">local part</a>
         * of the
         * <a href="http://www.w3.org/TR/REC-xml-names/#ns-qualnames">qualified
         * name</a> of this attribute.
         * <p><code>NULL</code> if :
         * <ul>
         * <li><p>this attribute condition can match any attribute.
         * <li><p>this attribute is a class attribute.
         * <li><p>this attribute is an id attribute.
         * <li><p>this attribute is a pseudo-class attribute.
         * </ul>
         */
        public abstract String getLocalName();

        /**
         * Returns <code>true</code> if the attribute must have an explicit value
         * in the original document, <code>false</code> otherwise. If this is a
         * pseudo class, the return value is unspecified.
         * <p><code>false</code> if:
         * <ul>
         * <li>if this is an id attribute.
         * <li>if this is a pseudo class a class attribute.
         * </ul>
         */
        public abstract bool getSpecified();

        /**
         * Returns the value of the attribute.
         * If this attribute is a class or a pseudo class attribute, you'll get
         * the class name (or psedo class name) without the '.' or ':'.
         */
        public abstract String getValue();
    }
}
